﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace Cotizav.AccesoDatos
{
    public class ListaTarifaDAO
    {
        public int Registrar(Util.ContextoDB ctx, Entidades.Equipo newEquipo, Entidades.ListaTarifa newListaTarifa)
        {
            SqlCommand cmd = new SqlCommand("USP_LISTATARIFA_INSERT", ctx.GetConexion(), ctx.GetTx());
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@ID", 0).Direction = System.Data.ParameterDirection.Output;
            cmd.Parameters.AddWithValue("@IDEQUIPO", newEquipo.IdEquipo);
            cmd.Parameters.AddWithValue("@MONEDA", newListaTarifa.Moneda ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@HORAXDIA", newListaTarifa.HoraxDia.HasValue ? newListaTarifa.HoraxDia.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@HORAXSEMANA", newListaTarifa.HoraxSemana.HasValue ? newListaTarifa.HoraxSemana.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@HORAXMES", newListaTarifa.HoraxMes.HasValue ? newListaTarifa.HoraxMes.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@TARIFAHORADIA", newListaTarifa.TarifaHoraDia.HasValue ? newListaTarifa.TarifaHoraDia.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@TARIFAHORASEMANA", newListaTarifa.TarifaHoraSemana.HasValue ? newListaTarifa.TarifaHoraSemana.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@TARIFAHORAMES", newListaTarifa.TarifaHoraMes.HasValue ? newListaTarifa.TarifaHoraMes.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@TARIFATOTALDIA", newListaTarifa.TarifaTotalDia.HasValue ? newListaTarifa.TarifaTotalDia.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@TARIFATOTALSEMANA", newListaTarifa.TarifaTotalSemana.HasValue ? newListaTarifa.TarifaTotalSemana.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@TARIFATOTALMES", newListaTarifa.TarifaTotalMes.HasValue ? newListaTarifa.TarifaTotalMes.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@ACTIVO", newListaTarifa.Activo);

            int result = cmd.ExecuteNonQuery();

            int id = Int32.Parse(cmd.Parameters["@ID"].Value.ToString());
            newListaTarifa.IdListaTarifa = id;

            return result;
        }

        public List<Entidades.ListaTarifa> Listar(Util.ContextoDB ctx)
        {
            SqlCommand cmd = new SqlCommand("select * from LISTA_TARIFA", ctx.GetConexion(), ctx.GetTx());
            DataTable dtListaTarifa = new DataTable();
            dtListaTarifa.Load(cmd.ExecuteReader());

            List<Entidades.ListaTarifa> lista = new List<Entidades.ListaTarifa>();

            foreach (DataRow fila in dtListaTarifa.Rows)
            {
                Entidades.ListaTarifa lt = new Entidades.ListaTarifa();

                lt.IdListaTarifa = Int32.Parse(fila["ID"].ToString());
                lt.IdEquipo = !(fila["IDEQUIPO"] is DBNull) ? Int32.Parse(fila["IDEQUIPO"].ToString()) : new Nullable<int>();
                lt.Moneda = fila["MONEDA"].ToString();
                lt.HoraxDia = !(fila["HORAXDIA"] is DBNull) ? Int32.Parse(fila["HORAXDIA"].ToString()) : new Nullable<int>();
                lt.HoraxSemana = !(fila["HORAXSEMANA"] is DBNull) ? Int32.Parse(fila["HORAXSEMANA"].ToString()) : new Nullable<int>();
                lt.HoraxMes = !(fila["HORAXMES"] is DBNull) ? Int32.Parse(fila["HORAXMES"].ToString()) : new Nullable<int>();
                lt.TarifaHoraDia = !(fila["TARIFAHORADIA"] is DBNull) ? decimal.Parse(fila["TARIFAHORADIA"].ToString()) : new Nullable<decimal>();
                lt.TarifaHoraSemana = !(fila["TARIFAHORASEMANA"] is DBNull) ? decimal.Parse(fila["TARIFAHORASEMANA"].ToString()) : new Nullable<decimal>();
                lt.TarifaHoraMes = !(fila["TARIFAHORAMES"] is DBNull) ? decimal.Parse(fila["TARIFAHORAMES"].ToString()) : new Nullable<decimal>();
                lt.TarifaTotalDia = !(fila["TARIFATOTALDIA"] is DBNull) ? decimal.Parse(fila["TARIFATOTALDIA"].ToString()) : new Nullable<decimal>();
                lt.TarifaTotalSemana = !(fila["TARIFATOTALSEMANA"] is DBNull) ? decimal.Parse(fila["TARIFATOTALSEMANA"].ToString()) : new Nullable<decimal>();
                lt.TarifaTotalMes = !(fila["TARIFATOTALMES"] is DBNull) ? decimal.Parse(fila["TARIFATOTALMES"].ToString()) : new Nullable<decimal>();
                lt.Activo = Int32.Parse(fila["ACTIVO"].ToString());

                lista.Add(lt);
            }

            return lista;
        }
    }
}
